// var i;
// exports.AL_Framework_Wechat_Adapter = void 0;
// var a = (function (e) {
//     function t() {
//         var t = e.call(this) || this;
//         console.log("Wechat Adapter init!");
//         return t;
//     }
//     __extends(t, e);
//     t.prototype.huoqu_jichu_lujing = function () {
//         return window.wx.env.USER_DATA_PATH + "/";
//     };
//     t.prototype.jiancha_wenjian_shifou_cunzai = function (e) {
//         try {
//             return window.wx.getFileSystemManager().accessSync(e);
//         } catch (e) {
//             console.error(e);
//             return !1;
//         }
//     };
//     t.prototype.isFile = function (e) {
//         return window.wx.getFileSystemManager().statSync(e).isFile();
//     };
//     t.prototype.writeFile = function (e) {
//         console.log("wx writeFile:", e.url);
//         var t = window.wx.getFileSystemManager();
//         var o = function () {
//             t.writeFile({
//                 filePath: e.url,
//                 data: e.data,
//                 encoding: "string" == typeof e.data ? "utf8" : "binary",
//                 success: function () {
//                     console.info("writeFile success");
//                     if (e.success) {
//                         e.success();
//                     }
//                 },
//                 fail: function (t) {
//                     console.info("writeFile fail " + t.errMsg);
//                     if (e.fail) {
//                         e.fail();
//                     }
//                 },
//                 complete: function () {
//                     if (e.complete) {
//                         e.complete();
//                     }
//                 }
//             });
//         };
//         var i = e.url.lastIndexOf("/");
//         var n = e.url.substring(0, i);
//         t.access({
//             path: n,
//             success: function () {
//                 o();
//             },
//             fail: function () {
//                 try {
//                     t.mkdirSync(n, !0);
//                     o();
//                 } catch (t) {
//                     if (e.fail) {
//                         e.fail();
//                     }
//                 }
//             }
//         });
//     };
//     t.prototype.deleteFile = function (e) {
//         console.log("deleteFile:", e.url);
//         window.wx.getFileSystemManager().unlink({
//             filePath: e.url,
//             success: function () {
//                 console.log("deleteFile success!");
//                 if (e.success) {
//                     e.success();
//                 }
//             },
//             fail: function (t) {
//                 console.log("deleteFile fail:", t);
//                 if (e.fail) {
//                     e.fail();
//                 }
//             },
//             complete: function () {
//                 if (e.complete) {
//                     e.complete();
//                 }
//             }
//         });
//     };
//     t.prototype.readFile = function (e) {
//         console.log("readFile:", e.url);
//         var t = window.wx.getFileSystemManager();
//         e.isString
//             ? t.readFile({
//                   filePath: e.url,
//                   encoding: "utf-8",
//                   success: function (t) {
//                       console.info("readFile success " + t.data);
//                       if (e.success) {
//                           e.success(t.data);
//                       }
//                   },
//                   fail: function (t) {
//                       console.info("readFile fail:", t);
//                       if (e.fail) {
//                           e.fail();
//                       }
//                   },
//                   complete: e.complete
//               })
//             : t.readFile({
//                   filePath: e.url,
//                   success: function (t) {
//                       console.info("readFile success " + t.data);
//                       if (e.success) {
//                           e.success(t.data);
//                       }
//                   },
//                   fail: function (t) {
//                       console.info("readFile fail:", t);
//                       if (e.fail) {
//                           e.fail();
//                       }
//                   },
//                   complete: e.complete
//               });
//     };
//     t.prototype.huoqu_baocun_xiangce_shifou_keyong = function () {
//         return !0;
//     };
//     t.prototype.baocundao_xiang_ce = function (e) {
//         console.log("baocundao_xiang_ce");
//         if (window.wx.authorize) {
//             window.wx.authorize({
//                 scope: "scope.writePhotosAlbum",
//                 success: function (t) {
//                     console.log("authorize success:", t);
//                     window.wx.baocunTupianDaoXiangce({
//                         filePath: e.url,
//                         success: function () {
//                             console.log("baocundao_xiang_ce success");
//                             if (e.success) {
//                                 e.success();
//                             }
//                         },
//                         fail: function (t) {
//                             console.log("baocundao_xiang_ce fail:", t);
//                             if (e.fail) {
//                                 e.fail();
//                             }
//                         }
//                     });
//                 },
//                 fail: function (t) {
//                     console.log(" authorize fail:", t);
//                     AL_APP_SDK_MANAGER.xianshi_tanchuang_tishi({
//                         title: "保存失败",
//                         content: "请打开“保存到相册”权限并重试",
//                         confirmText: "去设置",
//                         showCancel: !0,
//                         confirm: function () {
//                             if (window.wx.openSetting) {
//                                 window.wx.openSetting();
//                             }
//                             if (e.fail) {
//                                 e.fail();
//                             }
//                         }
//                     });
//                 }
//             });
//         }
//     };
//     t.prototype.toTempFilePath = function (e) {
//         if (e.canvas) {
//             e.x = e.x || 0;
//             e.y = e.y || 0;
//             e.destWidth = e.destWidth || e.width;
//             e.destHeight = e.destHeight || e.height;
//             e.canvas.toTempFilePath(e);
//         }
//     };
//     t.prototype.huoqu_fenxiang_shifou_qiyong = function () {
//         return !0;
//     };
//     t.prototype.share = function (e) {
//         window.wx.shareAppMessage({
//             title: e.msg,
//             imageUrl: e.imgURL
//         });
//     };
//     t.prototype.tianjia_youxi_quan_anniu = function (e) {
//         if (e.node.getComponent(cc.Widget)) {
//             e.node.getComponent(cc.Widget).updateAlignment();
//         }
//         var t = e.node.getBoundingBoxToWorld();
//         var o = cc.view.getVisibleSize();
//         var i = cc.view.getFrameSize().height / o.height;
//         var n = t.width;
//         var a = t.height;
//         var s = t.xMin;
//         var r = t.yMax;
//         var c = s * i;
//         var l = (o.height - r) * i;
//         n *= i;
//         a *= i;
//         var d = window.wx.createGameClubButton({
//             icon: e.icon || "light",
//             style: {
//                 left: c,
//                 top: l,
//                 width: n,
//                 height: a
//             }
//         });
//         this.tianjia_jianting_jiedian(e.node, {
//             onDestroy: function () {
//                 d.destroy();
//             },
//             onEnable: function () {
//                 d.show();
//             },
//             onDisable: function () {
//                 d.hide();
//             }
//         });
//         return d;
//     };
//     t.prototype.tianjia_fankui_anniu = function (e) {
//         if (e.node.getComponent(cc.Widget)) {
//             e.node.getComponent(cc.Widget).updateAlignment();
//         }
//         var t = e.node.getBoundingBoxToWorld();
//         var o = cc.view.getVisibleSize();
//         var i = cc.view.getFrameSize().height / o.height;
//         var n = t.width;
//         var a = t.height;
//         var s = t.xMin;
//         var r = t.yMax;
//         var c = s * i;
//         var l = (o.height - r) * i;
//         n *= i;
//         a *= i;
//         var d = "#16161630";
//         var u = "#ffffff80";
//         if (0 == e.visible) {
//             d = "#16161601";
//             u = "#ffffff01";
//         }
//         var h = window.wx.createFeedbackButton({
//             type: "text",
//             text: "意见反馈",
//             style: {
//                 left: c,
//                 top: l,
//                 width: n,
//                 height: a,
//                 backgroundColor: d,
//                 color: u,
//                 textAlign: "center",
//                 lineHeight: 28,
//                 fontSize: 14,
//                 borderRadius: 4
//             }
//         });
//         this.tianjia_jianting_jiedian(e.node, {
//             onDestroy: function () {
//                 h.destroy();
//             },
//             onEnable: function () {
//                 h.show();
//             },
//             onDisable: function () {
//                 h.hide();
//             }
//         });
//         return h;
//     };
//     return t;
// })(require("./AL_Framework_Base_Adapter").AL_Framework_Base_Adapter);
// exports.AL_Framework_Wechat_Adapter = a;

/**
 * AL_Framework_Wechat_Adapter - 微信适配器类
 * 继承自 AL_Framework_Base_Adapter
 */
class AL_Framework_Wechat_Adapter extends require("./AL_Framework_Base_Adapter").AL_Framework_Base_Adapter {
    constructor() {
        super();
        console.log("Wechat Adapter init!");
    }

    /** 
     * 获取基本路径
     * @returns {string} 基本路径
     */
    huoqu_jichu_lujing() {
        return `${window.wx.env.USER_DATA_PATH}/`;
    }

    /** 
     * 检查文件是否存在
     * @param {string} filePath - 文件路径
     * @returns {boolean} 文件是否存在
     */
    jiancha_wenjian_shifou_cunzai(filePath) {
        try {
            return window.wx.getFileSystemManager().accessSync(filePath);
        } catch (error) {
            console.error(error);
            return false;
        }
    }

    /** 
     * 判断路径是否是文件
     * @param {string} filePath - 文件路径
     * @returns {boolean} 是否为文件
     */
    isFile(filePath) {
        return window.wx.getFileSystemManager().statSync(filePath).isFile();
    }

    /** 
     * 写文件
     * @param {Object} options - 配置对象，包括文件路径、数据、成功回调等
     */
    writeFile(options) {
        console.log("wx writeFile:", options.url);
        const fileSystemManager = window.wx.getFileSystemManager();
        const writeFileCallback = () => {
            fileSystemManager.writeFile({
                filePath: options.url,
                data: options.data,
                encoding: typeof options.data === 'string' ? 'utf8' : 'binary',
                success: () => {
                    console.info("writeFile success");
                    if (options.success) {
                        options.success();
                    }
                },
                fail: (error) => {
                    console.info("writeFile fail " + error.errMsg);
                    if (options.fail) {
                        options.fail();
                    }
                },
                complete: () => {
                    if (options.complete) {
                        options.complete();
                    }
                }
            });
        };

        const dirPath = options.url.substring(0, options.url.lastIndexOf("/"));
        fileSystemManager.access({
            path: dirPath,
            success: () => {
                writeFileCallback();
            },
            fail: () => {
                try {
                    fileSystemManager.mkdirSync(dirPath, true);
                    writeFileCallback();
                } catch (error) {
                    if (options.fail) {
                        options.fail();
                    }
                }
            }
        });
    }

    /** 
     * 删除文件
     * @param {Object} options - 配置对象，包括文件路径、成功回调等
     */
    deleteFile(options) {
        console.log("deleteFile:", options.url);
        window.wx.getFileSystemManager().unlink({
            filePath: options.url,
            success: () => {
                console.log("deleteFile success!");
                if (options.success) {
                    options.success();
                }
            },
            fail: (error) => {
                console.log("deleteFile fail:", error);
                if (options.fail) {
                    options.fail();
                }
            },
            complete: () => {
                if (options.complete) {
                    options.complete();
                }
            }
        });
    }

    /** 
     * 读取文件
     * @param {Object} options - 配置对象，包括文件路径、是否为字符串、成功回调等
     */
    readFile(options) {
        console.log("readFile:", options.url);
        const fileSystemManager = window.wx.getFileSystemManager();

        const successCallback = (result) => {
            console.info("readFile success " + result.data);
            if (options.success) {
                options.success(result.data);
            }
        };

        const failCallback = (error) => {
            console.info("readFile fail:", error);
            if (options.fail) {
                options.fail();
            }
        };

        if (options.isString) {
            fileSystemManager.readFile({
                filePath: options.url,
                encoding: "utf-8",
                success: successCallback,
                fail: failCallback,
                complete: options.complete
            });
        } else {
            fileSystemManager.readFile({
                filePath: options.url,
                success: successCallback,
                fail: failCallback,
                complete: options.complete
            });
        }
    }

    /** 
     * 获取保存到相册功能是否启用
     * @returns {boolean} 是否启用
     */
    huoqu_baocun_xiangce_shifou_keyong() {
        return true;
    }

    /** 
     * 保存图片到相册
     * @param {Object} options - 配置对象，包括文件路径、成功回调等
     */
    baocundao_xiang_ce(options) {
        console.log("baocundao_xiang_ce");
        if (window.wx.authorize) {
            window.wx.authorize({
                scope: "scope.writePhotosAlbum",
                success: (result) => {
                    console.log("authorize success:", result);
                    window.wx.baocunTupianDaoXiangce({
                        filePath: options.url,
                        success: () => {
                            console.log("baocundao_xiang_ce success");
                            if (options.success) {
                                options.success();
                            }
                        },
                        fail: (error) => {
                            console.log("baocundao_xiang_ce fail:", error);
                            if (options.fail) {
                                options.fail();
                            }
                        }
                    });
                },
                fail: (error) => {
                    console.log("authorize fail:", error);
                    AL_APP_SDK_MANAGER.xianshi_tanchuang_tishi({
                        title: "保存失败",
                        content: "请打开“保存到相册”权限并重试",
                        confirmText: "去设置",
                        showCancel: true,
                        confirm: () => {
                            if (window.wx.openSetting) {
                                window.wx.openSetting();
                            }
                            if (options.fail) {
                                options.fail();
                            }
                        }
                    });
                }
            });
        }
    }

    /** 
     * 将画布转换为临时文件路径
     * @param {Object} options - 配置对象，包括画布、位置、宽高等
     */
    toTempFilePath(options) {
        if (options.canvas) {
            options.x = options.x || 0;
            options.y = options.y || 0;
            options.destWidth = options.destWidth || options.width;
            options.destHeight = options.destHeight || options.height;
            options.canvas.toTempFilePath(options);
        }
    }

    /** 
     * 获取分享功能是否启用
     * @returns {boolean} 是否启用
     */
    huoqu_fenxiang_shifou_qiyong() {
        return true;
    }

    /** 
     * 分享
     * @param {Object} options - 配置对象，包括分享信息、图片URL等
     */
    share(options) {
        window.wx.shareAppMessage({
            title: options.msg,
            imageUrl: options.imgURL
        });
    }

    /** 
     * 添加游戏俱乐部按钮
     * @param {Object} options - 配置对象，包括节点、图标等
     * @returns {Object} 游戏俱乐部按钮
     */
    tianjia_youxi_quan_anniu(options) {
        if (options.node.getComponent(cc.Widget)) {
            options.node.getComponent(cc.Widget).updateAlignment();
        }
        const boundingBox = options.node.getBoundingBoxToWorld();
        const visibleSize = cc.view.getVisibleSize();
        const scaleFactor = cc.view.getFrameSize().height / visibleSize.height;
        let width = boundingBox.width;
        let height = boundingBox.height;
        const left = boundingBox.xMin * scaleFactor;
        const top = (visibleSize.height - boundingBox.yMax) * scaleFactor;
        width *= scaleFactor;
        height *= scaleFactor;
        const com_game_club_button = window.wx.createGameClubButton({
            icon: options.icon || "light",
            style: {
                left: left,
                top: top,
                width: width,
                height: height
            }
        });
        this.tianjia_jianting_jiedian(options.node, {
            onDestroy: () => {
                com_game_club_button.destroy();
            },
            onEnable: () => {
                com_game_club_button.show();
            },
            onDisable: () => {
                com_game_club_button.hide();
            }
        });
        return com_game_club_button;
    }

    /** 
     * 添加反馈按钮
     * @param {Object} options - 配置对象，包括节点、显示等
     * @returns {Object} 反馈按钮
     */
    tianjia_fankui_anniu(options) {
        if (options.node.getComponent(cc.Widget)) {
            options.node.getComponent(cc.Widget).updateAlignment();
        }
        const boundingBox = options.node.getBoundingBoxToWorld();
        const visibleSize = cc.view.getVisibleSize();
        const scaleFactor = cc.view.getFrameSize().height / visibleSize.height;
        let width = boundingBox.width;
        let height = boundingBox.height;
        const left = boundingBox.xMin * scaleFactor;
        const top = (visibleSize.height - boundingBox.yMax) * scaleFactor;
        width *= scaleFactor;
        height *= scaleFactor;
        let backgroundColor = "#16161630";
        let color = "#ffffff80";
        if (options.visible === 0) {
            backgroundColor = "#16161601";
            color = "#ffffff01";
        }
        const feedbackButton = window.wx.createFeedbackButton({
            type: "text",
            text: "意见反馈",
            style: {
                left: left,
                top: top,
                width: width,
                height: height,
                backgroundColor: backgroundColor,
                color: color,
                textAlign: "center",
                lineHeight: 28,
                fontSize: 14,
                borderRadius: 4
            }
        });
        this.tianjia_jianting_jiedian(options.node, {
            onDestroy: () => {
                feedbackButton.destroy();
            },
            onEnable: () => {
                feedbackButton.show();
            },
            onDisable: () => {
                feedbackButton.hide();
            }
        });
        return feedbackButton;
    }
}

exports.AL_Framework_Wechat_Adapter = AL_Framework_Wechat_Adapter;
